package org.madmac.dhcp.cfg;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.madmac.join.PlacaRedeXMaquinas;

import org.madmac.exception.GenerateScriptErrorException;
import org.madmac.exception.PXMNotFoundException;

public class DhcpdConfig {

	private String delimitador;
	private String caminho;
	private String arquivo;
	private static DhcpdConfig instance;

	private DhcpdConfig() {
	}

	public String getDelimitador() {
		return delimitador;
	}

	public void setDelimitador(String delimitador) {
		this.delimitador = delimitador;
	}

	public String getCaminho() {
		return caminho;
	}

	public void setCaminho(String caminho) {
		this.caminho = caminho;
	}

	public String getArquivo() {
		return arquivo;
	}

	public void setArquivo(String arquivo) {
		this.arquivo = arquivo;
	}

	public static DhcpdConfig getInstance() {

		if (instance == null) {

			instance = new DhcpdConfig();
		}
		return instance;
	}

	public void generateScript(DhcpdConfig script) throws PXMNotFoundException, GenerateScriptErrorException {

		List<PlacaRedeXMaquinas> list_all = new ArrayList<PlacaRedeXMaquinas>();

		try {

			list_all = PlacaRedeXMaquinas.getInstance().selectAllMAC();

		} catch (Exception e) {
			throw new PXMNotFoundException();
		}

		String texto = "";
		File txt = null;
		script.setCaminho("/opt/apache-tomcat-6.0.20/webapps/madmac/dhcp/");
		try {

			txt = new File(script.getCaminho() + script.getArquivo());

		} catch (Exception e) {

			throw new GenerateScriptErrorException();
		}

		for (int i = 0; i < list_all.size(); i++) {

			PlacaRedeXMaquinas placa = list_all.get(i);
			try {

				FileOutputStream fos = new FileOutputStream(txt);

				texto += placa.getTombamento() + script.getDelimitador();
				texto += placa.getResponsavel() + script.getDelimitador();
				texto += placa.getMac() + script.getDelimitador();
				texto += placa.getIp() + "\n";

				fos.write(texto.getBytes());

			} catch (Exception e) {
				throw new GenerateScriptErrorException();
			}
		}
	}
}
